import { ArrayMaxSize, ArrayNotEmpty, IsArray, IsNotEmpty, Max, MaxLength } from "class-validator";

/**
 * 创建菜单DTO
 */
export class CreateMenuDTO {
    // 名称
    @IsNotEmpty({message: "名称不能为空"})
    @MaxLength(20, { message: '名称最多20个字符'})
    name: string

    // 上级id，根节点则为null
    pid?: number

    // 类型（0.目录，1.页面，2.按钮）
    @IsNotEmpty({message: "类型不能为空"})
    type: number

    // 路径
    @MaxLength(255, { message: '路径最多255个字符'})
    path: string

    // 图标
    @MaxLength(30, { message: '图标最多30个字符'})
    icon: string

    // 权限标识编码，如：USER_QUERY
    @MaxLength(50, { message: '权限编码最多50个字符'})
    authCode: string
    // 排序
    @Max(10000, { message: '排序最大值为1000'})
    sort: number

    // 使用终端，（0.PC， 1.H5）
    @IsNotEmpty({message: "终端不能为空"})
    terminal: number

    // 是否为外部连接，（0.否，1.是）
    @IsNotEmpty({message: "外部连接不能为空"})
    isOutLink: number

    // 是否可见，（0. 否，1.是）
    @IsNotEmpty({message: "是否可见不能为空"})
    isVisible: number
}

/**
 * 创建菜单组DTO
 */
export class CreateMenuGroupDTO {
    @IsNotEmpty({message: '分组名称不能为空'})
    @MaxLength(30, { message: '分组名称最多30个字符'})
    name: string

    @MaxLength(255, { message: '描述最多为255个字符'})
    description: string

    @ArrayNotEmpty({ message: 'list不能为空'})
    @IsArray({ message: '请传入一个list数组' })
    @ArrayMaxSize(500, { message: '批量最大为500条' })
    menuList: Array<number>
}


/**
 * 验证名称DTO
 */
export class VerifyNameDTO {
    // 上级id，根节点则为null
    pid: number

    // 名称
    @IsNotEmpty({message: "名称不能为空"})
    @MaxLength(20, { message: '名称最多20个字符'})
    name: string
}
